package com.nian.global.utils;

/**
 * Created by nian on 2020/11/6.
 /**
 * 通用常量定义
 */
public final class ConstantUtils {

    /**
     * 中文逗号.
     */
    public static final String COMMA_ZH_CN = getConstantValue("，");

    /**
     * 英文逗号.
     */
    public static final String COMMA_EN_US = getConstantValue(",");

    /**
     * 中文冒号.
     */
    public static final String COLON_ZH_CN = getConstantValue("：");

    /**
     * 英文冒号
     */
    public static final String COLON_EN_US = getConstantValue(":");

    /**
     * 中文分号
     */
    public static final String SEMICOLON_ZH_CN = getConstantValue("；");

    /**
     * 英文分号
     */
    public static final String SEMICOLON_EN_US = getConstantValue(";");

    /**
     * 是常量
     */
    public static final String CONSTANT_FLAG_YES = getConstantValue("1");

    /**
     * 不是常量
     */
    public static final String CONSTANT_FLAG_NO = getConstantValue("0");

    /**
     * 日期格式 yyyy-MM-dd HH:mm:ss
     */
    public static final String YYYY_MM_DD_24HH_MM_SS = getConstantValue("yyyy-MM-dd HH:mm:ss");

    /**
     * 日期格式 yyyy-MM-dd
     */
    public static final String YYYY_MM_DD = getConstantValue("yyyy-MM-dd");

    /**
     * 日期格式 yyyy-MM-dd HH:mm
     */
    public static final String DATE_HOUR_FORMAT = getConstantValue("yyyy-MM-dd HH:mm");

    /**
     * 日期格式 yyyy-MM-dd HH:mm:ss
     */
    public static final String DATE_TIME_FORMAT = getConstantValue("yyyy-MM-dd HH:mm:ss");

    /**
     * 日期格式HH:mm
     */
    public static final String HOUR_TIME_FORMAT = getConstantValue("HH:mm");

    /**
     * Bigdecimal小数精度
     */
    public static final int BIGDECIMAL_DIGITAL_6 = getConstantValue(6);

    /**
     * Bigdecimal小数精度
     */
    public static final int BIGDECIMAL_DIGITAL_4 = getConstantValue(4);

    /**
     * Bigdecimal小数精度
     */
    public static final int BIGDECIMAL_DIGITAL_2 = getConstantValue(2);

    /**
     * pdf字体路径
     */
    public static final String PDF_FONT_PATH = getConstantValue("pdfFontPath");

    /**
     * ROOT_COMPANY_ID 顶级机构id
     */
    public static final Long ROOT_COMPANY_ID = 0L;

    /**
     * company id
     */
    public static final Long COMPANY_ID = 1L;

    /**
     * 一级公司
     */
    public static final Integer COMPANY_LEVEL_ONE = 1;

    /**
     * batch任务执行完成
     */
    public static final String BATCH_TASK_EXECUTION_RESULT_DONE = getConstantValue("done");

    /**
     * batch任务执行错误
     */
    public static final String BATCH_TASK_EXECUTION_RESULT_ERROR = getConstantValue("error");

    /**
     * 有效
     */
    public static final String VALID_YES = getConstantValue("1");

    /**
     * 无效
     */
    public static final String VALID_NO = getConstantValue("0");

    /**
     * excel 后缀xlsx
     */
    public static final String EXCEL_SUFFIX_XLSX = getConstantValue(".xlsx");

    /**
     * 提示语分隔符“、”
     */
    public static final String CAESURA_SIGN = getConstantValue("、");

    /**
     * YES
     */
    public static final String YES = getConstantValue("1");

    /**
     * NO
     */
    public static final String NO = getConstantValue("0");

    /**
     * 最大的项目名称长度
     */
    public static final int MAX_NAME_LENGTH = getConstantValue(30);

    /**
     * 100的整数常量
     */
    public static final int ONE_HUNDRED = getConstantValue(100);

    /**
     * 默认的表格一页显示数
     */
    public static final int DEFAULT_PAGE_SIZE = getConstantValue(25);

    /**
     * 最大的备注长度
     */
    public static final int MAX_REMARK_LENGTH = getConstantValue(250);

    /**
     * 1KB的字节长度
     */
    public static final int BYTE_1KB = getConstantValue(1024);

    /**
     * 邮件模板
     */
    public static final String MAIL_FTL_FILE = getConstantValue("mail.ftl");

    /**
     * URL编码UTF-8.
     */
    public static final String URL_ENCODER_UTF8 = getConstantValue("UTF-8");

    /**
     * URL编码ISO8859-1.
     */
    public static final String URL_ENCODER_ISO88591 = getConstantValue("ISO8859-1");

    /**
     * 浏览器-IE.
     */
    public static final String BROWSER_IE = getConstantValue("MSIE");

    /**
     * Invalid ID
     */
    public static final Long INVALID_ID = Long.valueOf(0);

    /**
     * 1可以行驶
     */
    public static final String IS_RUN = getConstantValue("1");

    /**
     * 日期格式HH:mm:ss
     */
    public static final String HOUR_SECOND_FORMAT = getConstantValue("HH:mm:ss");

    /**
     * NULL
     */
    public static final String NULL = getConstantValue("");

    /**
     * 0
     */
    public static final int ZERO = getConstantValue(0);

    /**
     * 邮件模板(batchJobs)
     */
    public static final String MAIL_BATCH_JOBS_FTL_FILE = getConstantValue("mail_batch_jobs.ftl");

    /**
     * 成功
     */
    public static String SUCCESS_MSG = getConstantValue("success");

    /**
     * 失败
     */
    public static String FAIL_MSG = getConstantValue("fail");

    /**
     * 成功
     */
    public static int SUCCESS = 0;

    /**
     * 失败
     */
    public static int FAIL = -1;

    /**
     * 错误
     */
    public static int ERROR = -999;

    /**
     * 失败
     */
    public static String NO_DATA = "无数据";

    /**
     * 默认首个权限Id
     */
    public static Long FIRST_ROLE_ID = getConstantValue(10001L);

    /**
     * sql 脚本中的 单引号
     */
    public static String SQL_SINGLE_QUOTES = getConstantValue("\'");

    /**
     * sql 脚本中的 左括号
     */
    public static String SQL_LEFT_PARENTHESE = getConstantValue("(");

    /**
     * sql 脚本中的 右括号
     */
    public static String SQL_RIGHT_PARENTHESE = getConstantValue(")");

    /**
     * 已下载
     */
    public static String DOWNLOAD_FLAG_YES = getConstantValue("1");

    /**
     * 未下载
     */
    public static String DOWNLOAD_FLAG_NO = getConstantValue("0");

    /**
     * 抓取限制
     */
    public static Integer DOWNLOAD_LIMIT = getConstantValue(800);

    /**
     * 传入值，返回一个值，通过这种方式获取常量，可以避免增量发布时，引用常量的地方指向错误
     *
     * @param value 传入的作为常量的值
     * @param <T>   类型参数
     * @return 常量值
     */
    public static <T> T getConstantValue(T value) {
        return value;
    }
}

